﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KaartenLib;
namespace KaartFormApp
{
    public partial class CardApp : Form
    {
        KansSpel spel;
        int opPunten = 0;
        int opAantal = 0;
        List<PictureBox> Playerpictures = new List<PictureBox>();
        List<PictureBox> Computerpictures = new List<PictureBox>();

        public CardApp(String name, int saldo,KansSpel spel)
        {
            this.spel = spel;
            InitializeComponent();
            lblPlayer.Text = name;
            lblAmount.Text = saldo.ToString();
        }
        /// <summary>
        /// Dit is hard coded, indien je dit dynamisch kan maken, go ahead! 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            Playerpictures.Add(this.pictureBox1);
            Playerpictures.Add(this.pictureBox2);
            Playerpictures.Add(this.pictureBox3);
            Playerpictures.Add(this.pictureBox4);
            Playerpictures.Add(this.pictureBox5);
            Playerpictures.Add(this.pictureBox6);
            Playerpictures.Add(this.pictureBox7);
            Playerpictures.Add(this.pictureBox8);
            Playerpictures.Add(this.pictureBox9);
            Playerpictures.Add(this.pictureBox10);
            Computerpictures.Add(this.pictureBox11);
            Computerpictures.Add(this.pictureBox12);
            Computerpictures.Add(this.pictureBox13);
            Computerpictures.Add(this.pictureBox14);
            Computerpictures.Add(this.pictureBox15);
            Computerpictures.Add(this.pictureBox16);
            Computerpictures.Add(this.pictureBox17);
            Computerpictures.Add(this.pictureBox18);
            Computerpictures.Add(this.pictureBox19);
            Computerpictures.Add(this.pictureBox20);

            txtBetA.Text = "0";
            txtBetP.Text = "0";
            cbTroefkaart.Items.Add("Harten");
            cbTroefkaart.Items.Add("Klaveren");
            cbTroefkaart.Items.Add("Ruiten");
            cbTroefkaart.Items.Add("Schoppen");

            spel.deelKaarten(10);
            lblStatus.Text = spel.getStatus().ToString();            
            loadPictures();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            if (txtBetP.Text == "" || txtBetA.Text == "")
            {
                MessageBox.Show("Vul u inzet in, aub");
            }
            else
            {
                KaartSoort ks = new KaartSoort();
                if (cbTroefkaart.Text == "Kies een soort")
                {
                    MessageBox.Show("Kies een soort, aub");
                }
                else
                {
                    String soort = cbTroefkaart.SelectedItem.ToString();
                    switch (soort)
                    {
                        case "Harten": ks = KaartSoort.Harten;
                            break;
                        case "Klaveren": ks = KaartSoort.Klaveren;
                            break;
                        case "Ruiten": ks = KaartSoort.Ruiten;
                            break;
                        case "Schoppen": ks = KaartSoort.Schoppen;
                            break;
                    }
                    opPunten = int.Parse(txtBetP.Text);
                    opAantal = int.Parse(txtBetA.Text);
                    spel.startSpel(ks, opPunten, opAantal);
                    lblStatus.Text = spel.getStatus();
                }
            }
        }

        private void loadPictures()
        {
            for (int i = 0; i < 10; i++)
            {
                if (spel.getSpelerKaarten()[i] != null)
                {
                    String image = getPicture(spel.getSpelerKaarten()[i]);
                    Playerpictures[i].Image = new Bitmap(image);
                }
                else
                {
                    Playerpictures[i].Image = new Bitmap(@"..\..\KaartAfbeeldingen\kaartRug.PNG");
                }
                Computerpictures[i].Image = new Bitmap(@"..\..\KaartAfbeeldingen\kaartRug.PNG");
            }
        }

        private String getPicture(Kaart kaart)
        {
            StringBuilder image = new StringBuilder();

            switch (kaart.Soort)
            {
                case KaartSoort.Ruiten:
                    image.Append("di");
                    break;
                case KaartSoort.Harten:
                    image.Append("he");
                    break;
                case KaartSoort.Schoppen:
                    image.Append("sp");
                    break;
                case KaartSoort.Klaveren:
                    image.Append("cl");
                    break;
            }

            switch (kaart.Waarde)
            {
                case KaartWaarde.Aas:
                    image.Append("1");
                    break;
                case KaartWaarde.Heer:
                    image.Append("k");
                    break;
                case KaartWaarde.Dame:
                    image.Append("q");
                    break;
                case KaartWaarde.Boer:
                    image.Append("j");
                    break;
                case KaartWaarde.Tien:
                    image.Append("10");
                    break;
                case KaartWaarde.Negen:
                    image.Append("9");
                    break;
                case KaartWaarde.Acht:
                    image.Append("8");
                    break;
                case KaartWaarde.Zeven:
                    image.Append("7");
                    break;
                case KaartWaarde.Zes:
                    image.Append("6");
                    break;
                case KaartWaarde.Vijf:
                    image.Append("5");
                    break;
                case KaartWaarde.Vier:
                    image.Append("4");
                    break;
                case KaartWaarde.Drie:
                    image.Append("3");
                    break;
                case KaartWaarde.Twee:
                    image.Append("2");
                    break;
            }
            image.Append(".gif");
            image.Insert(0, @"..\..\KaartAfbeeldingen\");
            return image.ToString();
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[0]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[1]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[2]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[3]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox5_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[4]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[5]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox7_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[6]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox8_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[7]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox9_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[8]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void pictureBox10_Click(object sender, EventArgs e)
        {
            spel.speelBeurt(spel.getSpelerKaarten()[9]);
            lblStatus.Text = spel.getStatus();
            loadPictures();
        }

        private void btnLeave_Click(object sender, EventArgs e)
        {

        }
    }
}
